Conventional read/write applications in DVD systems generally use multiple flash memories and synchronous dynamic random access memories (SDRAMs). A front end controller of a DVD system may need a dedicated flash memory and SDRAM to facilitate performing error correction on compressed video data.
Referring to FIG. 1, a diagram of a conventional Reed-Solomon Product Code (RSPC) block 50 used for error correction of digital video is shown. The RSPC block 50 uses rows and columns to encode an array of data bytes. In a DVD application, 172×192 bytes of data are encoded by adding sixteen bytes 52 (i.e., PO) in each column and ten bytes 54 (i.e., PI) in each row to form the final RSPC code 50 of 182×208 bytes. To better decode an RSPC block 50, iterative methods are conventionally used to decode by row and column and then by row and column again until either no more errors exist in the code or a best resulting code is established.
Each iteration is capable of changing up to all of the data bytes in the RSPC block 50 and update the decoding results in response to the changes. The ability to change the data commonly means that either the data block is saved locally or a lot of bandwidth is used moving the data back and forth from an external memory over a memory bus. Conventional decoding methods access each of the data bytes multiple times during processing. For example, after finishing decoding of a particular row, some of the data bytes in the particular row are often updated to correct errors found by the decoding. Therefore, when column decoding begins, column corrections are calculated based on partially corrected data. A next iteration of row decoding uses the partially corrected data from the previous column decoding, and so on.
As each decoding step processes a row or column, either the data bytes are saved locally until the iterations are complete or the data bytes are accessed across the memory bus in time for the associated row or column decode. Storing all of the data bytes locally results in a large local memory (i.e., 182 columns×208 rows×2 copies=75,712 bytes). Storing all of the data bytes in an external memory consumes a large amount of a memory bus bandwidth.
It would be desirable to reduce memory on a DVD system by implementing delta syndrome based iterative Reed-Solomon product decoder on a DVD system to produce a unified memory architecture for recording applications.